/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hojadetrabajo4;
import java.util.LinkedList;
/**
 *
 * @author RAUL
 */

    


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * esta clase es un stack generico la cual solo guarda valores
 * @param <E> este es un generico por lo que definimos que sera en el driver 
 * @author RAUL
 */
public class Stackito <E>  extends AbstractStack<E> {

    // Atributos 
    private LinkedList<E> lista  = new LinkedList<E> (); 
    private E valor;
    
    private int index = 0;
    
    private E num1; 
    boolean resultado;
    
    /**
     * este es es metodo constructor no devuelve nada y se encuentra vacio
     */
    public Stackito (){
        
    }
    
    /**
     * este metodo obtiene un objeto de cualquier tipo y lo mete al stack
     * @param item este es el valor que se desea meter al stack
     */
    

    /**
     * este metodo muestra el ultimo objeto guardado en el stack 
     * @return regresa el objeto guardado de ultimo 
     */
    @Override
    public E pop() {
        valor = lista.get(index);
        lista.remove(index);
        
        return valor;
    }

    

    /**
     * este metodo es para ver si esta vacio o no el stack 
     * @return regresa true solamente si el stack se encuentra vacio
     */
    @Override
    public boolean empty() {
        resultado = lista.isEmpty();
        return resultado;
    }

    @Override
    public E peek() {
        num1 = lista.get(index);
	
        return num1;
    }

   public void setIndex(int index){
	this.index = index;
}
    public String toString(){
	String descripcion = "Ingreso No. : ";
	int contador;
	for(contador =0; contador <= index; contador ++){
		descripcion += (contador+1) + "  ";
	}
	descripcion += "\n" + "              ";
	for(contador = 0; contador <= index; contador ++){
		descripcion+= lista.get(contador) + "  ";
	}
	return descripcion;
    }

    @Override
    public E push(E item) {
        lista.add(item) ; 
        
        return item; 
    }

    

    
        
    }



